Distributed scalable media environment for advertising placement in movies

ABSTRACT

A method of placing an ad in a video in an original format may include producing a transcoded video in a proxy format which is a representation of frames of the video in the original format. The transcoded video in the proxy format is convertible to other formats for output. The method may include selecting the ad from a set of ads, selecting a location within a frame of the transcoded video where the ad is to be placed, selecting frames of the transcoded video where the ad is to be placed, placing a placeholder in the transcoded video in the selected frames at the selected location, and storing the transcoded video in the proxy format. When the transcoded video is presented to a user on a display device, the selected ad is inserted in place of the placeholder.

CROSS-REFERENCE TO RELATED APPLICATIONS

This is a continuation of U.S. patent application Ser. No. 13/011,002,filed Jan. 21, 2011, issued as U.S. Pat. No. 9,934,819, entitled“DISTRIBUTED SCALABLE MEDIA ENVIRONMENT FOR ADVERTISING PLACEMENT INMOVIES,” which is a continuation of U.S. patent application Ser. No.11/439,593, filed May 23, 2006, issued as U.S. Pat. No. 7,877,689,entitled “DISTRIBUTED SCALABLE MEDIA ENVIRONMENT FOR MOVIE ADVERTISINGPLACEMENT IN MOVIES,” which claims priority from U.S. ProvisionalApplication No. 60/683,662, filed May 23, 2005, entitled “DISTRIBUTEDSCALABLE MEDIA ENVIRONMENT,” the entire contents of which are fullyincorporated herein by reference for all purposes.

BACKGROUND OF THE INVENTION

The invention relates to distributed network systems, mass data storageand retrieval, non-linear editing systems and, more particularly, to adistributed network media system for the capture, archive, editing,analytical content retrieval of audio/visual information for web basedmedia download or streaming distribution as well as authoring variousfiles for network-accessible and end-user standalone devices includingmobile phones, and audiovisual playback devices.

Linear media editing systems used for analog audio, video tape andphotographic film are manual, time consuming and cumbersome to reducecontent into a final form and distribute. In more recent times computersystems allow for time efficient non-linear video editing systems.Current non-linear editing on computer oriented systems involvescapturing media content permitting rapid access to the media content atany point in the linear sequence for moving portions into any order andstoring the media content on a storage device, such as a magnetic diskdrive or digital versatile disk (DVD).

The average person currently has small set of alternatives for editingcontent from media capture devices such as camcorders, camera phones,audio recorders, and other media capture devices without having to incurthe costs of a computer system and software for editing. In addition,non-linear editing systems are complex and very difficult to use.

People capture various random and personally interesting events, such aswork, travel and entertainment event using their camcorders or cameraphones. To edit this content, people require easy to use non-linearediting systems that facilitate editing without a high degree ofcomputer or editing skill.

Media content storage technologies provide for storing great amounts ofinteractive multimedia, for example, the DVD format. Unfortunately, theDVD Specification for authoring is very complex, as are the computersystems that attempt to embody it. A further disadvantage ofconventional DVD authoring systems is that they provide a DVD authorwith only minimal control and flexibility.

The process of authoring a DVD includes a number of complex steps andequipment. Accordingly, there is a need for authoring systems andmethods that reduces the time, cost and complexity of the authoring anddistributing DVD.

Separate and distinct systems for computer based non-linear editing, DVDauthoring, and distributions are known. However, no system exists thataccomplishes all in an environment that can be distributed and accessedby computer networks, such as the Internet, wide area networks (WAN),local area networks (LAN).

SUMMARY OF THE INVENTION

In accordance with an aspect of this invention, there is provided asystem for and a method of placing an ad in a movie, comprisingselecting the ad from a set of ads, selecting the location in a framewhere the ad is to be placed, selecting the frames of the movie wherethe ad is to be placed, and placing the selected ad in the selectedframes at the selected location.

In some cases, a graphical user interface enables at least one ofselecting the ad by manipulating a graphical image representing the ad,selecting the location in a frame by manipulating a graphical imagerepresenting the frame location, and selecting the frames bymanipulating a graphical image representing the frames of the movie.

In some cases, a computer selects the ad, the location in the frame, andthe frames of the movie. The computer selects the frames in accordancewith a popularity measurement of the frames of the movie, based on theplacement of deep tags in the movie by a plurality of users.

It is not intended that the invention be summarized here in itsentirety. Rather, further features, aspects and advantages of theinvention are set forth in or are apparent from the followingdescription and drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a configuration diagram for one embodiment of the presentinvention wherein the transcoder is used via a public communicationnetwork;

FIGS. 2-4 are configuration diagrams for other embodiments of thepresent invention wherein the transcoder resides locally;

FIGS. 5-6 are flowcharts depicting high-level operation of movieuploading and downloading, respectively;

FIGS. 7A and 7B are a flowchart depicting transcoder operation;

FIG. 8 is a diagram of a user interface including a texture strip anddeep tag marker;

FIGS. 9A-9H are diagrams used in explaining specialized editingcapabilities;

FIG. 10 is a diagram illustrating automatic determination of popularparts of a movie;

FIG. 11 is a diagram illustrating access permission for a movie;

FIG. 12 is a diagram illustrating a transcoded movie; and

FIG. 13 is a data schema used in the present invention.

DETAILED DESCRIPTION

As used herein and in the claims, the term “movie” refers to videoand/or audio data intended for display to a human. In some cases, thevideo and audio data are separate but associated data, while in othercases, the video and audio are combined. In still other cases, videoexists without audio, and vice-versa. Video encompasses still image dataand moving image data.

The disclosures of the following patents are hereby incorporated byreference in their entirety:

U.S. Pat. No. Issue Date Title 5,880,722 Mar. 9, 1999 Video cursor withzoom in the user interface of a video editor 5,886,692 Mar. 23, 1999Attracting/repelling edit blocks in a user interface of a video editor6,027,257 Feb. 22, 2000 Pan and tilt unit 6,157,771 Dec. 5, 2000 Methodand apparatus for seeking within audiovisual files 6,181,883 Jan. 30,2001 Dual purpose camera for VSC with conventional film and digitalimage capture modules 6,201,925 Mar. 13, 2001 Method and apparatus forediting video files 6,262,777 Jul. 17, 2001 Method and apparatus forsynchronizing edited audiovisual files 6,285,361 Sep. 4, 2001 Method andapparatus for clipping video segments from an audiovisual file 6,400,886Jun. 4, 2002 Method and apparatus for stitching edited video segments6,661,430 Dec. 9, 2003 Method and copying an apparatus for audiovisualsegment

There are several environments in which a user might want to use amovie. Turning to FIG. 1, an environment including public communicationnetwork 100 is shown. Network 100 may be the Internet. Coupled tonetwork 100 are movie system 10, server 80, PC 110, phone 130, PC 140and camcorder 145. Coupling occurs via wireline and/or wirelesscommunication lines, possibly with intermediate computers such as anInternet service provider (not shown).

Movie system 10 includes videobase 20, database 30, transcoder 40,server 50, DVD burner 60 and internal network 70. In some embodiments,videobase 20 and database 30 are combined. Elements 20, 30, 40, 50 aregeneral purpose computers programmed according to the present invention,and include suitable processors, memory, storage and communicationinterfaces; and each element may be embodied in one or many physicalunits depending on factors such as expected processing volume, redundanthardware design and so on.

Videobase 20 serves to store movies uploaded by users, in their uploadedformat, and to store transcoded versions of these movies. Videobase 20also stores advertisement movies, referred to herein as “ads,” intendedfor inclusion in the transcoded movies.

Database 30 serves to store data for movie system 10, including datarelating to users of movie system 10, movies processed by movie system10, and suitable administrative data such as usage, throughput and audittrail information. In some embodiments, users use movie system 10 forfree and the suppliers of ads pay upon ad viewing. In other embodiments,users pay based on usage or a flat rate.

Transcoder 40 serves to receive uploaded movies and process them togenerate transcoded movies, as described in detail below with regard toFIG. 7.

Server 50 receives requests from users via network 100 and respondsthereto. In cases where responding to a request requires the services oftranscoder 40, server 50 passes appropriate messages between transcoder40 and network 100. Server 50 also functions as a firewall to protectnetwork 70 from improper usage.

Server 50 executes upload manager 55, a software program that works withuploader 112, described below, to upload a movie to server 50.

DVD burner 60 is responsive to commands from transcoder 40 to create adigital video disk, which is then shipped via conventional physicalshipping services.

Billing program 65 examines usage data created by transcoder 40 andserver 50. The usage data is part of the administrative data in database30. Billing program 65 then generates invoices and applies authorizedpayments. For example, some users may have preauthorized charges totheir credit cards, telephone bills or bank accounts for their usage ofmovie system 10. As another example, transcoded movies created by usersmay include advertising, for which the advertisers agree to pay based onnumber of views, and if so, billing system 65 arranges payments to usersbased on usage of the transcoded movies with advertising.

There is a cost to store and distribute movies. To offset this cost, andto reward users, movie system 10 enables movie creators to include ads,either manually or automatically, in their movies. Movie system 10enables flexible ad placement, including at the start or end of a movie,within selected frames of a movie, and at a selected location and sizewithin the selected frames. Advertisers generally pay for placement oftheir ads based on number of times their ad is viewed, and possibly inaccordance with the popularity of the place in the movie where the ad isinserted, how much time the ad is inserted for, and the size of the adrelative to a movie frame.

Internal network 70 serves to carry communication traffic between theelements of movie system 10. Internal network 70 may be a local areanetwork at a single premises, or may span multiple premises.

Server 80 is a general purpose computer coupled to storage 90. Server 80responds to requests from communication network 100 by providing moviesstored in storage 90. By providing the address of server 80 to moviesystem 10, one of the movies stored in storage 90 can be used as aninput for transcoder 40.

PC 110 is a general purpose personal computer coupled to camcorder 120.Camcorder 120 enables a user to record a movie and transfer the movie toPC 110.

PC 110 executes uploader 112 and player 114. Uploader 112 is a softwareprogram that enables a movie to be uploaded from PC 110 to server 50.Player 114 is a software program that enables PC 110 to view and editmovies, in conjunction with transcoder 40. When PC 110 registers withserver 50, server 50 downloads uploader 112 and player 114 to PC 110.

Uploader 112 functions to locate movie files stored in PC 110, and tomanage transmission of the movie files to upload manager 55 of server 50using a suitable protocol such as the secure file transfer protocol(sftp). In embodiments having a peer-to-peer network for downloading,such as networks using the bittorrent protocol, the peer-to-peer networkis also used for uploading. Since movie files are large, the fileuploading may be interrupted; uploader 112 enables the uploading toresume at its interruption point. In some embodiments, uploader 112converts a very large file, such as a 36 Mb file in DV format, to asmaller file of comparable visual quality, such as a 3 Mb files in MPEGformat. Uploader 112 enables the user of PC 110 to select a file foruploading; to monitor the status of the upload, such as percentcompleted and speed of uploading; to pause and resume the uploading; andto cancel the uploading.

Player 114 is a client application for a PC browser. In someembodiments, player 114 resides on a portable device such as a mobilephone or network-attached digital video camera without a browser, and inthese embodiments, player 114 is a network enabled client application.

Player 114 enables a user to view a movie, including forward seek andrewind functions; to seek the compressed video on a remote server usingrandom seek points; to request a movie download from the random seekpoint, for example, in accordance with U.S. Pat. No. 6,157,771, thedisclosure of which is hereby incorporated by reference in its entirety;and to use the functions described below with regard to FIG. 7 on themovie, including creating and editing deep tags, creating and editingmash-ups, adding special effects, providing sharing permission to otherusers, creating virtual and/or physical DVDs, inserting ads, andcreating and editing watermarks. FIG. 8, discussed below, shows agraphical user interface for player 114.

Phone 130 is a wireless communication device executing versions ofuploader 112 and player 114 adapted for the device capabilities of phone130. Phone 130 is a coupled to camera 135, which serves to captureimages and provide the captured images to phone 130 as a movie signal.In some embodiments, phone 130 uses the multimedia messaging service(MMS) protocol to transmit and/or receive movies. In other embodiments(not shown), phone 130 communicates with a local network using aprotocol such as WiFi, and the WiFi network in turn communicates withcommunication network 100.

PC 140 is a general purpose personal computer that is able to viewtranscoded movies by obtaining an address for the movie, or a segmentthereof, and providing the address to server 50. As an example, a userof PC 110 or a user of phone 130 may upload a movie to movie system 10,edit the uploaded movie, and provide to the user of PC 140, via email,an address of an edited segment that the user of PC 140 is permitted toview.

Camcorder 145 is a network enabled movie capture device configured toupload its recordings to movie system 10. In some embodiments, there isat least one predefined user group able to immediately edit informationuploaded from camcorder 145. This configuration is useful in a securityapplication, for example.

The user of PC 110 or phone 130 serves as an editor. PC 110, phone 130,PC 140 and camcorder 145 are each at respective locations that areremote from the location of movie system 10.

FIGS. 2-4 are illustrate other embodiments of the present inventionwherein the transcoder is local to the movie file, that is, the moviefile is not uploaded via a public communication network. This issometimes referred to as a transcoder appliance model.

FIG. 2 shows PC 150, camcorder 160 and DVD burner 170. Camcorder 160 isfor recording a movie and providing the recorded movie to PC 150. PC 150is a general purpose personal computer operative to receive and store arecorded movie; to enable a user to edit the stored movie usingtranscoder 155, which is a software program operative in a similarmanner as transcoder 40; and to provide a transcoded movie to DVD burner170 for recording thereon, in similar manner as DVD burner 60.

FIG. 3 shows video recorder 180, robotic camera with pan-tilt-zoom (PTZ)control 190, and DVD burner 200. Robotic camera 190 is operative toprovide a video signal to video recorder 180. Video recorder 180 is ageneral purpose computer operative to receive and store the video signalfrom robotic camera 190, to enable a user to edit the stored video usingtranscoder 185, which is a software program operative in a similarmanner as transcoder 40; and to provide a transcoded movie to DVD burner200 for recording thereon, in similar manner as DVD burner 60.

FIG. 4 shows robotic camera 210, video recorder 220, private network 230and PC 240. PTZ camera 210 is operative to provide a video signal tovideo recorder 220. Video recorder 220 is operative to receive and storethe video signal from robotic camera 210, and to provide the storedvideo to PC 240 via private network 230. Private network 230 is a localarea network, virtual private network, or the like, which serves tocouple video recorder 220 and PC 240. PC 240 is a general-purposepersonal computer operative to receive video from video recorder 220,sometimes in response to a command from PC 240 and sometimes on aperiodic or as-available basis from video recorder 220; to store thereceived video; and to execute transcoder 245 to edit the stored videoto produce transcoded video. Transcoder 245 is a software programoperative in a similar manner as transcoder 40.

FIGS. 5-6 are flowcharts depicting high-level operation of movieuploading and downloading, respectively.

Turning to FIG. 5, at step 300, user1 (not shown) at PC 110 uploads amovie to server 50, such as a movie recorded by camcorder 120. Theuploaded movie is in an original format, also referred to as a firstformat or an uploaded format. In some cases, user1 provides an addressof server 80, and instructs server 50 to retrieve the movie from server80. Server 50 stores the uploaded movie in videobase 20. At step 310,transcoder 40 processes the uploaded movie, enabling the user to editthe uploaded movie as described in detail below, to produce a transcodedmovie. The transcoded movie is in a proxy format, also referred to as asecond format or an intermediate format.

At step 320, transcoder 40 stores the transcoded movie in videobase 20.As described below, user1 can grant permission to other users to viewthe whole of the transcoded movie, or to view segments of the transcodedmovie, by providing suitable addresses to the authorized users.

Turning to FIG. 6, at step 330, user2 (not shown), who has receivedpermission to view the transcoded movie, sends a request for the movieto server 50. The request includes information about the displaycapability of the device used by user2, such as phone 130 or PC 140.

At step 340, server 50 requests the selected movie from videobase 20,indicating the format for the movie.

At step 350, if the requested format happens to match the stored format,then the movie is provided directly to server 50. Otherwise, videobase20 is operative to convert the format from the stored format to therequested format. The movie is provided in the requested format, alsoreferred to as a third format, a downloaded format, or an output format.Server 50 then sends the provided movie to user2 via suitabledistribution method such as streamed video or podcast, or presentationon a web page, blog, wiki, really simple syndication (RSS) or othertechnique. In some embodiments, videobase 20 sends the stored movie totranscoder 40, for conversion to the requested format, and thentranscoder 40 provides the movie in the requested format to server 50.

FIGS. 7A and 7B, collectively referred to as FIG. 7, are a flowchartdepicting transcoder 40 operation.

As an overview, transcoder 40 receives an uploaded movie, creates arepresentation for easy editing, and adds user-supplied editing data(steps 400-440) to create a transcoded movie. Then, at the user'soption, some, all or none of the following functions can be performed,in any desired sequence, and in as many editing sessions as desired:

-   -   creating a playback product using the transcoded movie, the        playback product being one of a mash-up, a tree or a link-up        (steps 450-460);    -   adding special effects (steps 470-490),    -   including advertising movies in the transcoded movie (steps        500-600), and    -   providing permission for other users to view all of the        transcoded movie, or segments of the transcoded movie (steps        610-630).

Including an advertising movie in a transcoded movie ensures that evenif the viewer of the transcoded movie has a filter for blockingadvertising pop-ups and the like, the included advertising movie isviewed, since the filter considers the advertising movie to be part ofrequested content.

At step 400 of FIG. 7, transcoder 40 receives the uploaded video, eitherfrom the user or from another web site. The video may be in one ofseveral formats, some of which involve compression using a schemewherein a compressed frame refers to an earlier and/or later frame, andthen provides change information relative to the earlier and/or laterframes. Transcoder 40 converts the uploaded movie to a series ofself-referential (uncompressed) frames. Generally, a frame is acollection of picture elements (pixels) corresponding to an imagepresented to a human viewer.

At step 410, transcoder 40 builds a texture strip representing themovie. Specifically, transcoder 40 applies a function to each frame togenerate texture data, and saves the texture data as a video image. Forexample, the function might be to extract the center 8×8 pixels of eachframe and realign into a 64 pixel height column and the texture strip isthe sequence of 64 pixel columns. The texture strip may be saved as a.jpg file. The texture strip serves to represent the entire movie in aconvenient information bar, and is sometimes referred to as a navigationbar. The texture strip is an intuitive way of determining the temporalposition of a frame relative to the entirety of a movie. The texturestrip often is useful in detecting scene changes, which is importantwhen deciding which frames to group together as a segment.

At step 420, transcoder 40 creates a source proxy for the uploadedmovie. Generally, a source proxy is a representation of the frames ofthe movie in a particular format that is easy to convert to otherformats and to distribute via public communication network 100. Forexample, the Flash video format, according to the H.263 standard, can beused for the source proxy.

Using a source proxy reduces the format conversion issue. Specifically,if there are n movie formats, a general transcoder should be able toconvert from any input to any output format, which, by brute force,would require n2 different format converters. However, using a sourceproxy means that only 2n format converters are needed (n converters tothe source proxy format, and another n converters from the source proxyformat to the output format). Additionally, as new movie formats becomeavailable, supporting them requires creating only 2 converters performat (one to the source proxy format, and one from the source proxyformat), rather than 2n with the brute force approach. It is recognizedthat, sometimes, the source proxy format may be the desired outputformat.

Editing of the proxy format, also referred to as proxy editing, mayoccur in several ways.

In one embodiment of proxy editing, the edits are applied directly tothe proxy frames.

In another embodiment of proxy editing, the proxy frames are maintainedas generated, and an edit list is created, comprising edits to besequentially applied to the proxy frames. Each time the edited movie isprovided, the edits are applied anew to the proxy frames. Thisembodiment is particularly useful when edits need to be undone, or whenmany users are editing one movie to create separate edited movies.

In a further embodiment of proxy editing, a hybrid approach is used,wherein during an edit session, an edit list is created, and only at thetermination of the edit session are the edits applied directly to theproxy frames.

At step 430, transcoder 40 generates a thumbnail as a visualrepresentation of the entire movie. Typically, the user selects a frame,and transcoder 40 reduces it to a thumbnail size, such as 177×144pixels. A user having many stored movies can conveniently view theirthumbnails, rather than or in addition to text descriptions and/orfilename descriptions.

At step 440, transcoder 40 accepts metadata from the user. Moviemetadata may include a filename for the transcoded movie, subject matterkeywords associated with the movie, a short text description to beassociated with the thumbnail, any deep tags the user cares to define,address information such as a hyperlink of information to be associatedwith the transcoded movie, and an associated movie such as an audio filedescribing the contents of the movie.

A deep tag is a video bookmark, indicating a sequential group of framesthat are to be treated as a separately addressable segment; the deep tagmetadata includes the movie filename, the user filename, date ofcreation of the deep tag, date of most recent modification of the deeptag, a deep tag filename, the start frame, the end frame, the durationof the segment, and a short text description of the segment. A deep tagis understood to be a convenient way of identifying a segment.

FIG. 8 shows screen display 700 of player 114, provided, for example, atPC 110, and including video display 710, thumbnail 715, texture strip720, positioner 730, deep tag marker 735, deep tag button 740, deep tagbar 750, and function buttons 760, 771, 772, 773, 775, 780 and 790.

Video display 710 shows the current frame of video. When the editor'sdevice, such as PC 110 or phone 130 permits, the video frame isdisplayed in its proxy format. However, if the editor's device cannotsupport the proxy format, the transcoder 40 converts edited frames to anoutput format suitable for the editor's device prior to sending theedited frames to the editor for display.

Thumbnail 715 is a small image representing the entire movie.

Texture strip 720 comprises sequential frame representations 725 andsubsequent information; each frame representation 725 is the result ofthe function used to create the texture strip, such as a vertical columnof 64 pixels, and represents a single frame. Subsequent informationindicates special effects applied to the frames and any advertisinginserted in the frames.

Positioner 730 indicates where the frame display in video display 710 islocated relative to the entirety of the movie. Positioner 730 enablesthe editor to use texture strip 720 to seek frames in the movie in arandom access manner.

Deep tag marker 735 has a left edge that can be adjusted by a user, andalso has a right edge that can be adjusted by the user; after the userhas adjusted the left and right edges of deep tag marker 735, the userindicates that these settings should be saved as a deep tag, such as byclicking deep tag button 740, and providing a text descriptioncorresponding to the movie segment indicated by the deep tag. Deep tagmarker 735 enables the editor to use texture strip 720 to select asegment of the movie.

Deep tag bar 750 is a visual representation of deep tags that havealready been created for the movie. In the example of FIG. 8, deep tags751 and 752 have previously been created for the movie, and are locatednear the start and end, respectively, of the movie being edited.

Function buttons 760, 771, 772, 773, 775, 780 and 790 enable the user toedit the movie. Data button 760 enables the user to view and editmetadata associated with the movie. Playback product buttons 771, 772and 773 take the user to specialized editing interfaces, discussedbelow. Effects button 775 enables the user to add and edit specialeffects. Ad button 780 enables the user to include advertising in themovie. Sharing button 790 enables the user to grant permission to otherusers or user groups to view selected segments of the movie.

At step 450 of FIG. 7, transcoder 40 determines whether the user wishesto create a playback product. If so, at step 460 of FIG. 7A, the stepsof FIG. 7B are executed by transcoder 40.

Turning to FIG. 7B, at step 650, transcoder 40 receives the user'sselection of which playback product is to be created. For instance,using the editing interface of FIG. 8, the user indicates which playbackproduct by selecting one of buttons 771, 772, 773. In this embodiment,three products are defined. In other embodiments, other products areavailable. The playback products are a mash-up, a tree, and a link-up.

A mash-up is a sequential display of selected segments. A viewer of amash-up playback product can only navigate forward or backward in theproduct.

A tree is a set of segments and a hierarchical, linear control structurefor displaying the segments. Generally, a viewer of a tree playbackproduct clicks on selections to navigate the product, in addition toforward and backward.

A link-up is a set of segments and a non-linear control structure fordisplaying the segments. Generally, a viewer of a link-up playbackproduct navigates via one or more of: forward and back movement,clicking on selections, and/or providing alphanumeric input. A tree anda mash-up are constrained forms of a link-up.

If a mash-up is selected, at step 655, the user selects the sequence ofsegments to be included via a mash-up editor. Then, at step 685, theuser selects whether the mash-up is to be published or burned.

Publishing means transferring the mash-up to videobase 20 or to user PC110. If publishing is selected, at step 690, the user selects athumbnail to represent the mash-up, and provides metadata if desiredsuch as a mash-up filename. At step 695, the user indicates adestination for the mash-up file, such as videobase 20, or PC 110.Transcoder 40 responds by transferring the mash-up in accordance withthe user's selections.

Burning means writing the mash-up to a removable storage medium, such asa DVD or memory chip, and sending the removable storage medium to theuser. If burning is selected, at step 698, transcoder 40 transfers themash-up file to the removable storage medium type designated by theuser. In the case of a DVD, transcoder 40 sends the mash-up file to DVDburner 60, which creates a DVD having the mash-up.

FIG. 9A shows mash-up editor interface 801. Thumbnail area 810 includesnavigation buttons 825, 826 for altering which thumbnails of the user'sstored thumbnails are displayed in area 810. In general, a user acquiresstored files, represented by thumbnails, by uploading a movie, image,graphic or audio file; selecting frames of an existing movie; orcreating a playback product as described herein. After storing a file,the user can edit the file by selecting the file's thumbnail in one ofthe specialized editors discussed herein. Thumbnail area 810 shows tenthumbnail windows 811-820, but a user may have hundreds of stored files,each with a corresponding thumbnail. Filename entry window 827 enables auser to type in the name of a file, or select a filename from adirectory, which puts the file's thumbnail in thumbnail window 811.

Slots area 836 comprises placeholders into which the editor, alsoreferred to as the user, drags and drops thumbnails to indicate that thethumbnails are part of the mash-up being created. Slots area 836includes slots 837, 838, 839, 840.

Texture strip 830 represents the mash-up being created. Phantom startand end frames 831, 832 enable the user to add thumbnails before orafter the selected thumbnails. Frame selector 835 has start and endportions that can be adjusted by the user. After the user is satisfiedwith the thumbnails dragged into slots 837-840, the user clicks insertbutton 833 to insert these thumbnails into the mash-up. In response,transcoder 40 creates a frame representation of each thumbnail, puts thethumbnail frame representation in the appropriate frame of texture strip830, and clears slots 837-840. To insert subsequent files into themash-up, the user moves frame selector 835 to a position after theinserted thumbnails. To insert preceding files into the mash-up, theuser moves frame selector 835 to include phantom frame 831. To deletefiles from the mash-up, the user positions frame selector 835 on theframe representations of the thumbnails of the files to be deleted, andclicks cut button 834.

At any time, the user can click preview button 896 to see what themash-up will look like. In response to preview button 896, transcoder 40creates preview window 802 having viewing area 803, and navigationbutton 804-807, and begins playing the mash-up in preview window 803.The user clicks back button 804 to “rewind” the playback, forward button805 to “advance” the playback, pause button 806 to pause the playback,and stop button 807 to terminate the playback and close preview window802.

Publish button 897 enables the user to indicate to transcoder 40 thatpublication of the mash-up is desired. Clicking publish button 897causes transcoder 40 to pop-up a window (not shown) that enables theuser to select a thumbnail and destination.

Burn button 898 enables the user to indicate to transcoder 40 thatburning of the mash-up is desired. Clicking burn button 898 causestranscoder 40 to pop-up a window (not shown) that enables the user toselect a media for burning and provide delivery directions for theburned media.

Back button 899 enables the user to return to edit window 700 in FIG. 8.If a tree playback product is selected, at step 660, the user selectsthe sequence of segments to be included via a tree editor, and at step665, defines the tree structure. Then, at step 685, the user selectswhether the tree playback product is to be published or burned.

FIG. 9C shows tree editor interface 851. Tree editor interface 851 isgenerally similar to mash-up editor interface 801; similarities will notbe discussed for brevity.

Tree structure window 855 shows a graph of the control structure of thetree playback product being created. Initially, the window is blank,since nothing has been specified.

FIG. 9D shows an example of tree structure window 855 after a treeplayback product has been created. The tree playback product includessegments 855-1, 855-2, 855-3 and 855-4. Window 855 shows, via lines, thecontrol structure for the navigation between the segments of theplayback product. In this example, segment 855-1 leads to segment 855-2which in turn leads to either of segment 855-3 and 855-4.

Each segment of a tree playback product comprises a background, aforeground and a link. In one embodiment, a background is a still image,a foreground is a video or audio segment, and the link is indicated by agraphic image. When the viewer of the playback product clicks on thelink, the viewer is taken to the next segment, that is, a link indicatesone segment. Each segment can have 0, 1 or multiple links.

A tree segment can also include 0, 1 or multiple commands. Typically, acommand is indicated by a graphic image. When the viewer of the playbackproduct clicks on the command, the command is sent to the source of theplayback product, such as server 50, for execution.

Returning to FIG. 9C, to create a segment, the editor drags and dropsthumbnails from thumbnail window 810 into at least one of backgroundslot 861, foreground slot 862, and link slot 863. If more links aredesired for this segment, the editor clicks add link button 864, andthen drags and drops thumbnails into the additional link slots (notshown) created by clicking link button 864. When the user is satisfied,he or she clicks insert button 857 to create a segment.

If a tree playback product segment is created with at least one link,transcoder 40 creates an empty segment as the destination of each link,and displays the empty segment in tree structure window 855. The editorclicks on the empty segment in tree structure window 855 and insertsthumbnails into at least one of the background, foreground and linkslots.

If the editor wishes to delete a segment, the editor selects the segmentin tree structure window 855, then clicks cut button 856 to remove thesegment. Removing a segment automatically removes the link leading tothe segment from the preceding segment.

To create a command in a segment, the editor clicks add command button865. Transcoder 40 provides a pop-up window with a command editor (notshown) that enables the editor to drag and drop a thumbnail indicatingthe command, select a command from a menu of commands or type thecommand directly into a command line window (if the editor knows how towrite commands in the command language, such as Javascript), and, whenappropriate, provide parameters for the command. Examples of commandsarea (i) a hyperlink to a webpage, (ii) provide the email address of theviewer of the playback product to the owner of the playback product,(iii) provide the email address of the viewer to a third party, (iv)download a program and execute it, and so on.

It will be understood that a thumbnail can be dropped into multipleslots during creation of a tree playback product.

Clicking preview button 896 causes transcoder 40 to create a windowsimilar to that shown in FIG. 9B, however, the tree playback productincludes link areas in window 803 that a user can click to navigatebetween segments.

If a link-up playback product is selected, at step 670, the user selectsthe sequence of segments to be included via a link-up editor. At step675, the user defines the link-up structure. At step 680, the userdefines the link-up navigation questions and answers. Then, at step 685,the user selects whether the link-up is to be published or burned.

FIG. 9E shows link-up editor interface 871. Link-up editor interface 871is generally similar to tree editor interface 851; similarities will notbe discussed for brevity.

Link-up structure window 875 shows a graph of the control structure ofthe link-up playback product being created. Initially, the window isblank, since nothing has been specified.

FIG. 9F shows an example of link-up structure window 875 after a link-upplayback product has been created. The link-up playback product includessegments 875 a, 875 b, 875 c and 875 d. Window 875 shows, via lines, thecontrol structure for the navigation between the segments of theplayback product. In this example, segment 875 a, always the firstsegment to be played during playback, leads to segments 875 b, 875 c and875 d. Segment 875 b leads to 875 a and 875 c. Segment 875 c leads tosegments 875 b and 875 d. Segment 875 d is sometimes referred to as afinal segment, since it is never followed by another segment. Segments875 b and 875 c are sometimes referred to as intermediate segments,since they are not the start segment and they do lead to anothersegment.

Returning to FIG. 9E, to create the link-up structure, the editor dragsand drops thumbnails from thumbnail window 810 into start slot 880 andat least one of intermediate slots 881, 882, 883. If more links aredesired for this segment, the editor clicks add link button 878, andthen drags and drops thumbnails into the additional slots created byclicking link button 878 (not shown). When the user is satisfied, he orshe clicks insert button 877 to create the link-up. Transcoder 40responds by displaying the link-up in link-up structure window 875,highlights the just-created bit of link-up structure, and freezes thehighlight until the editor clicks edit Q&A button 879 to create textassociated with the link-up.

A Q&A dialog (not shown), consists of an optional header and a set ofchoices associated with the respective links. One instance of a Q&A is,

-   -   Click on the word to indicate what you want to view next:        -   kitchen        -   den        -   basement        -   garage        -   backyard            Another instance of a Q&A is,    -   More pictures of actor Alice    -   More pictures of actor Bob    -   More pictures of actor Chris        Another instance of a Q&A is,    -   Type (or click on) the number closest to your age:        -   15        -   20        -   25        -   30

If the editor wishes to delete a segment, the editor selects the segmentin link-up structure window 875, then clicks cut button 876 to removethe segment. Removing a segment automatically removes the portion of theQ&A leading to the segment from the preceding segments.

Clicking preview button 896 causes transcoder 40 to create a windowsimilar to that shown in FIG. 9B, however, the link-up playback productincludes Q&A areas in window 803 that a viewer can utilize to navigatebetween segments.

Returning to FIG. 7A, at step 470, transcoder 40 determines whether theuser wishes to apply any special effects to the transcoded movie. Forexample, the user indicates a desire to apply special effects byselecting effects button 775 in FIG. 8. If so, at step 480, transcoder40 provides the user with an effects editor (discussed below). In someembodiments, there are about 300 different effects on the effects menu.The user selects desired effects and indicates where in the movie theyshould be applied. At step 490, transcoder 40 applies the effects.Generally, the user views the results of the effects, and continueseffects editing until satisfied with the result. The user can createmultiple versions of a transcoded movie, differing in their specialeffects.

Examples of special effects include: watermark, mosaic, barndoor, noise,dissolve, spiral, fade in, fade out, increase contrast, decreasecontrast, soften perimeter, cut frame, overlay, and so on.

A movie watermark for a movie including video is one of (a) a permanentgraphic such as a logo inserted in each frame of the movie, (b) anoverlay graphic such as a logo inserted in each frame of the movie, or(c) hidden information such as a logo, also referred to assteganography. A movie watermark for an audio only movie is (i) a soundfile inserted at a predetermined point in the movie, such as its startor end, or (ii) hidden information such as text, also referred to assteganography.

FIG. 9G shows effects editor interface 1000. Effects area 1010 includeseffects buttons 1020, 1021, 1022, 1023, indicating which effect isrepresented by the button. Typically, an effects button has an image ofthe effect and holding the cursor on the button displays text describingthe effect. Forward and reverse navigation buttons 1011, 1012 enablenavigation among the effects buttons. Clicking describe button 1013displays text describing the effect (same as holding the cursor on thebutton). Clicking show button 1014 creates a pop-up window showing theeffect in action, useful when the size of the button is too small tofully convey the effect. Effect name window 1015 enables the editor totype the name of an effect or to select it from a drop-down menu.

An effect can also include an executable command, as described abovewith respect to the tree playback product editor.

Texture strip 1030 indicates the frame representations of the movieselected for effects, such as frame representation 1031. Slider 1035 hasa left and right edge that can be adjusted by the editor, to indicateframes to receive an effect. After the editor selects an effect ineffects area 1010, and adjust slider 1035, the editor clicks applybutton 1033 to apply the effect. After the editor has finished applyingeffects, he or she clicks preview button 896 to preview. If an editorwishes to cancel an effect, she positions slider 1035 on the appropriateframe representations and clicks cancel button 1034. Publish button 897,burn button 898, and back button 899 function as described above.

Returning to FIG. 7A, at step 500, transcoder 40 obtains the user'spreference for including advertising in the transcoded movie. Forexample, the user indicates a desire to include advertising by selectingadvertising button 780 in FIG. 8. Videobase 20 contains advertisingmovies, also referred to as ad movies, that is, segments provided byadvertisers for inclusion in user-created movies. Database 30 includesthe advertiser's preference for the types of movies that the advertiserwants its ad movies to be combined with, whether the advertiser prefersor requires that its ad be used as a static insert or a dynamic insert(discussed below), whether the advertiser permits its ad movies to beused as part of a mash-up video, and how the advertiser pays the user,such as a one-time fee, or per-viewing of the ad movie. Conventionalsystems place advertising only at the start of user-created content;movie system 10 is more flexible in that advertising can be insertedwithin a user-created transcoded movie in either a static or a dynamicmanner.

If the user wants to include an ad movie in the transcoded movie, atstep 510, transcoder 40 determines whether the user wishes to select thead movie, or to accept an ad movie selected by movie system 10. If theuser wishes to select the ad movie, at step 520, transcoder 40 providesthe user with a menu of ad movies that are consistent with thecharacteristics of the user's transcoded movie, and the user selects oneor more ad movies for inclusion in their transcoded movie. If the userdoes not wish to select the ad movies, at step 530, transcoder 40selects one or more ad movies based on an ad movie selection procedureand its own determination of how many ad movies are appropriate for thetranscoded movie. In some embodiments, the ad movie selection procedureis based on maximizing revenue for the user, and following aleast-recently-used ad movie selection procedure. In some embodiments,the determination of how many ad movies are appropriate is based on atleast one of: the length of the transcoded movie, keywords in themetadata, how many segments are deep tagged, and the length of the deeptagged segments, and so on.

An ad used with movie system 10 can be static or dynamic. A static ad isinserted in the transcoded movie prior to its storage in videobase 20.For a dynamic ad, the transcoded movie is stored in videobase 20 with aplaceholder, and when the transcoded movie is presented to a user, theactual ad is inserted, the ad being chosen based on a characteristic ofthe user such as the user's location, referred to as a “geo-aware” ad,the characteristics of the display device, referred to as a “deviceaware” ad, or other suitable characteristic.

At step 540, transcoder 40 determines whether the user wishes to controlthe position of the ad movie(s) within a frame of the transcoded movie,or to accept positioning determined by movie system 10. If the userwishes to control the positioning of the ad movie, at step 550,transcoder 40 provides the user with a graphical interface forcontrolling ad movie positioning, and a menu of how the ad-movie shouldbe inserted, such as a picture-in-picture at the top, left, right orbottom of the transcoded movie, the top being referred to as a “banner”ad, or as a stand-alone segment in the transcoded movie. In someembodiments, the user selects the size of the space in each frame thatthe ad may occupy. If the user does not wish to control the positioningof the ad movie, at step 560, transcoder 40 decides where the movie adshould be placed, typically by looking at the default position in themetadata associated with the ad movie.

At step 570, transcoder 40 determines whether the user wishes to controlthe frames of the transcoded movie where the ad will be placed, or toaccept positioning determined by movie system 10. If the user wishes tocontrol the positioning of the ad movie, at step 580, transcoder 40provides the user with a graphical interface for controlling ad moviepositioning, such as a texture strip and slider. If the user does notwish to control the positioning of the ad movie, at step 590, transcoder40 estimates where the movie ad should be placed. Any suitableestimation procedure may be employed. As an example, if the transcodedmovie is a completely new movie with no deep tags, the estimationprocedure specifies that the first scene having a length of at least thelength of the ad movie is the selected position, and that the ad movieshould be inserted as a picture-in-picture in the lower right of thetranscoded movie. However, if the transcoded movie is associated with atleast one other user, then a popularity procedure is used to select theposition for the ad movie.

FIG. 10 is a diagram illustrating automatic determination of popularparts of a movie. Horizontal bars 950-955 represent the same movie, asdeep tagged by different users. Histogram 960, also referred to aspopularity density function 960, indicates the number of times that aportion of the movie has appeared in a deep tag, which serves as anindication of the popularity of the various parts of the movie. Movieads are placed in the popular parts, if they are long enough, or withrespect to the popular parts, if the popular parts are shorter than thead movie. For example, the movie ad could be placed so that its start isco-located with the start of a popular segment having a duration of atleast 70% of the duration of the ad movie.

At step 600 of FIG. 7A, transcoder 40 inserts the selected movie adsinto the transcoded movie.

FIG. 9H shows ad editor interface 1100 having ad area 1110, adpack area1121 and texture strip 1130.

Ad area 1110 includes ad thumbnail windows 1111-1120 and navigationbuttons 1101, 1102 for altering which thumbnails of the ad thumbnails invideobase 20 are displayed in area 1110. Filename entry window 1103enables a user to type in the name of an ad file, or select an adfilename from a directory, which puts the file's thumbnail in adthumbnail window 1111. Ad area 1110 also includes automatic button 1104,for indicating that movie system 10 should select an ad.

An adpack is a pairing of an ad movie and an adpack description. Anadpack description controls how the ad movie will be displayed in thetranscoded movie. Examples of adpack descriptions are:

-   -   Ad image at frame bottom    -   Ad image at frame bottom, fade in and fade out    -   Ad image slides from left to right in succeeding frames    -   Ad audio plays when frames are viewed    -   Ad video at frame top    -   Ad video at frame bottom    -   Ad video in frame left    -   Ad video in frame right        The International Advertising Bureau has defined standard ad        display areas, and these may be used as adpack descriptions;        see, for example, http://www.iab.net/standards/popup/index.asp.

An adpack can also include one or more executable commands, as describedabove with respect to the tree playback product editor. The provider ofan ad movie typically specifies certain adpacks as selectable for its admovie, and configures the commands to be associated with its ad movie.Examples of commands are: (i) a hyperlink to the ad provider's web site,(ii) sending the email address of the viewer of the transcoded movie tothe ad provider, and (iii) requesting a file download from the adprovider to the viewer of the transcoded movie; other commands are alsocontemplated.

Adpack area 1121 includes adpack description windows 1125-1128 andnavigation buttons 1122, 1123 for altering which adpack descriptions aredisplayed in area 1121. Filename entry window 1124 enables a user totype in the name of an adpack, or select an adpack from a directory,which puts the adpack in adpack description window 1125. Adpack area1121 also includes automatic button 1105, for indicating that moviesystem 10 should select the placement of the ad in the frame.

Texture strip 1130 includes frame representations of the movie beingedited, such as frame representation 1131. Slider 1135 indicates framerepresentations in the texture strip; the editor can adjust the left andright edges of slider 1135. Automatic button 1106 is used when theeditor wishes to indicate that movie system 10 should select the framesin which the ad is placed.

To manually insert an ad, the editor selects an ad, such as by clickingad thumbnail 1117, then selects an adpack description to control wherein the frame the ad is placed, such as by clicking adpack description1127, then adjusts slider 1135 to indicate which frames the ad is placedin, then clicks insert button 1133.

To instruct movie system 10 to select an ad and put it in the moviebeing edited, the editor clicks automatic buttons 1104, 1105 and 1106.

To remove an ad, the editor adjust slider 1135 then clicks cut button1134.

Buttons 896, 897, 898, 899 function as described above.

Returning to FIG. 7A, at step 610, transcoder 40 determines whether theuser wishes to share the transcoded movie, or segments thereof. Forexample, the user indicates a desire to share by selecting share button790 in FIG. 8. If so, at step 620, the user identifies segments by deeptagging them, or using previously defined deep tags. At step 630, theuser identifies who is permitted to access which segments. In someembodiments, when a user registers with movie system 10, the user cancreate access groups having one or more outside users in each group; thesame outside user can be included in one or more access groups. Anoutside user is generally identified by a nickname and an email address.Then, the user instructs transcoder 40 when to make the accesspermissions effective, typically by sending an email to the outsideusers identifying the segment address, and its short text description.The segment address is of the form: (server 50 address, transcoded movieidentifier, deep tag identifier). In some embodiments, the user can, aspart of sharing, list the transcoded movie in a directory accessible toother users of movie system 10, searchable by characteristics of thetranscoded movie, such as its metadata subject keywords, its creationtime, and/or its ads.

FIG. 11 is a diagram illustrating access permission for a movie. Let itbe assumed that the owner of movie 900, user1, defines a deep tagindicating segment 904 of movie 900, and permits an outside user, user2,to access segment 904. Now, in movie 900, segments 902 and 906 areprivate segments, while segment 904 is a shared segment.

User2 sees segment 904 as movie 910. User2 can define a deep tagindicating segment 914 of movie 910, and permit an outside user, user3,to access segment 914. Now, in movie 910, segments 912 and 916 areprivate to user2, while segment 914 is shared.

User3 sees segment 914 as movie 920, and can similarly enable access toall or parts of movie 920.

The transcoded movie is then stored in videobase 20, and database 30 issuitably updated.

A use case will now be discussed.

Let it be assumed that a user uploads three files (FIG. 7, step 400).The first file is a DVD file in MPEG2 format. The second file is awebcam file in MPEG4 format. The third file is a mobile phone camerarecording in 3GP format. At this time, the MPEG2, MPEG4 and 3GP formatsare considered incompatible.

Movie system 10 converts each of these three files to proxy files inH.263 Flash format (FIG. 7, step 420). Let it be assumed that each ofthe proxy files has 100 frames, and have the filenames:

-   -   Proxy-1200    -   Proxy-1201    -   Proxy-1202

Now the user creates a mash-up (FIG. 7, step 450) using the mash-upeditor (FIG. 9A). Transcoder 40 represents the mash-up as a list of theproxy files and the start and end frames of each proxy file:

-   -   Proxy-1200, start 22, end 27    -   Proxy-1201, start 84, end 86    -   Proxy-1202, start 62, end 70

Next, the user adds special effects (FIG. 7, step 480) using the effectseditor (FIG. 9G). Let it be assumed that one special effect is awatermark (effect 45) comprising an image in the user's file proxy-678,and another special effect is a dissolve (effect 18) between the seventhto ninth frames of the mash-up. Transcoder 40 represents the result as:

-   -   Proxy-1200, start 22, end 27    -   Proxy-1201, start 84, end 86    -   Proxy-1202, start 62, end 70    -   Effect 45, proxy-678    -   Effect 18, start 7, end 9

Finally, the user inserts two ads, allowing the system to automaticallychoose the ads and their placement (FIG. 7, steps 530, 560, 590) usingthe ad editor (FIG. 9H). Transcoder 40 represents the result as:

-   -   Proxy-1200, start 22, end 27    -   Proxy-1201, start 84, end 86    -   Proxy-1202, start 62, end 70    -   Effect 45, proxy-678    -   Effect 18, start 7, end 9    -   Ad 4511268, adpack 2, start 3, end 6    -   Ad 3897522, adpack 163, start 11, end 16

FIG. 12 shows the texture strip resulting from this use case. Texturestrip 1200 comprises frame representations 1201-1218. As indicated bybracket 1271, frame representations 1201-1207 are from file Proxy-1200.As indicated by bracket 1272, frame representations 1208-1210 are fromfile Proxy-1201. As indicated by bracket 1273, frame representations1211-1218 are from file Proxy-1202. Watermark 1230, the logo in fileproxy-678, is present in the bottom right of each frame, as depicted ineach of the frame representations. Dissolve special effect 1260 ispresent in frame representations 1207-1209. First ad 1240, having framerepresentations 1241-1244, in present as a top banner in frames1203-1206. Second ad 1250, having frame representations 1251-1256, ispresent as a side banner in frames 1211-1216.

It will be appreciated that some editing functions can be accomplishedin several ways. For example, if the user wishes to delete a frame fromthe movie, this can be accomplished via (1) creating a mash-upcomprising the frames before the deleted frame, followed by the framesafter the deleted frame, and not including the deleted frame; (2) addinga special effect to cause the deleted frame to be entirely dark orentirely light, as part of a scene transition; (3) directly selecting“delete frame” from the special effects menu; (3) enabling sharing ofthe entirety of the movie except for the to-be-deleted frame; and so on.

FIG. 13 is a partial data schema for database 30. Generally, database 30can be viewed by users or by movies having appropriate accesspermission. The schema is structured in accordance with usage of moviesystem 10.

Although an illustrative embodiment of the present invention, andvarious modifications thereof, have been described in detail herein withreference to the accompanying drawings, it is to be understood that theinvention is not limited to this precise embodiment and the describedmodifications, and that various changes and further modifications may beeffected therein by one skilled in the art without departing from thescope or spirit of the invention as defined in the appended claims.

What is claimed is:
 1. A method of placing an ad in a video in anoriginal digital format, comprising: receiving, by a transcoder, thevideo in the original digital format; converting, by the transcoder, thevideo in the original digital format into a series of uncompressedframes; creating, by the transcoder, a source proxy representing theseries of uncompressed frames of the video in the digital originalformat; selecting, by the transcoder through the source proxy, alocation within a frame of the video in the original format where the adis to be placed; selecting, by the transcoder through the source proxy,a plurality of frames in the video in the original format where the adis to be placed; placing, by the transcoder, a content placeholder forthe ad in the source proxy corresponding to the selected plurality offrames at the selected location in the video in the original format;storing the content placeholder with the source proxy; receiving arequest for the video in a requested format from a user; preparing thevideo in the requested format with the content placeholder; and atruntime, in presenting the video in the requested format to the user ona display device, selecting an actual ad based on a characteristic ofthe user or of the display device and inserting the selected actual adin the selected plurality of frames at the selected location in place ofthe content placeholder.
 2. The method according to claim 1, wherein thetranscoder comprises a computer program embodied on non-transitorycomputer memory.
 3. The method according to claim 1, wherein thecharacteristic of the user comprises a location of the user.
 4. Themethod according to claim 1, wherein the preparing the video in therequested format is performed by a computer program embodied on anon-transitory computer memory.
 5. The method according to claim 1,wherein the source proxy is distributable via a public communicationnetwork.
 6. The method according to claim 1, wherein the presenting thevideo in the requested format to the user on the display devicecomprises converting the source proxy to an output format suitable forthe display device.
 7. The method according to claim 1, wherein thesource proxy is stored in a videobase with the content placeholder.
 8. Asystem for placing an ad in a video in an original digital format, thesystem comprising: a processor; a non-transitory computer readablemedium; and stored instructions translatable by the processor toperform: receiving the video in the original digital format; convertingthe video in the original digital format into a series of uncompressedframes; creating a source proxy representing the series of uncompressedframes of the video in the original digital format; selecting, throughthe source proxy, a location within a frame of the video in the originalformat where the ad is to be placed; selecting, through the sourceproxy, a plurality of frames in the video in the original format wherethe ad is to be placed; placing a content placeholder for the ad in thesource proxy corresponding to the selected plurality of frames at theselected location in the video in the original format; storing thecontent placeholder with the source proxy; receiving a request for thevideo in a requested format from a user; preparing the video in therequested format with the content placeholder; and at runtime, inpresenting the video in the requested format to the user on a displaydevice, selecting an actual ad based on a characteristic of the user orof the display device and inserting the selected actual ad in theselected plurality of frames at the selected location in place of thecontent placeholder.
 9. The system of claim 8, wherein the source proxyis distributable via a network.
 10. The system of claim 9, wherein thenetwork comprises a public communication network.
 11. The system ofclaim 10, wherein the public communication network comprises theInternet.
 12. The system of claim 8, wherein the video in the originaldigital format is received from a device communicatively connected tothe system over a network.
 13. The system of claim 8, wherein thepresenting the video in the requested format to the user on the displaydevice comprises converting the source proxy to an output formatsuitable for the display device.
 14. The system of claim 8, wherein thesource proxy is stored in a videobase with the content placeholder. 15.A computer program product for placing an ad in a video in an originaldigital format, the computer program product comprising a non-transitorycomputer readable medium storing instructions translatable by aprocessor to perform: receiving the video in the original digitalformat; converting the video in the original digital format into aseries of uncompressed frames; creating a source proxy representing theseries of uncompressed frames of the video in the original digitalformat; selecting, through the source proxy, a location within a frameof the video in the original format where the ad is to be placed;selecting, through the source proxy, a plurality of frames in the videoin the original format where the ad is to be placed; placing a contentplaceholder for the ad in the source proxy corresponding to the selectedplurality of frames at the selected location in the video in theoriginal format; storing the content placeholder with the source proxy;receiving a request for the video in a requested format from a user;preparing the video in the requested format with the contentplaceholder; and at runtime, in presenting the video in the requestedformat to the user on a display device, selecting an actual ad based ona characteristic of the user or of the display device and inserting theselected actual ad in the selected plurality of frames at the selectedlocation in place of the content placeholder.
 16. The computer programproduct of claim 15, wherein the source proxy is distributable via anetwork.
 17. The computer program product of claim 16, wherein thenetwork comprises a public communication network.
 18. The computerprogram product of claim 17, wherein the public communication networkcomprises the Internet.
 19. The computer program product of claim 15,wherein the presenting the video in the requested format to the user onthe display device comprises converting the source proxy to an outputformat suitable for the display device.
 20. The computer program productof claim 15, wherein the source proxy is stored in a videobase with thecontent placeholder.